A major objective of software design is to develop software for complex systems more cost effectively with better quality. Complex systems often include constituent systems that are supported by different types of computers that may use different programming languages. As an example, a business may have an inventory system, an accounting system and an ordering system that were developed independently of each other. In order to reduce costs and to increase efficiency, the business may wish to combine these systems in an integrated fashion. Integrating the constituent systems may be difficult and costly. Thus, there is a real need for design tools that facilitate the development of software that can spans across the constituent systems.
Currently, there are many design tools that can be used for visual modeling. For example, Rational Rose® is a suite of tools that models systems with component-based architectures. Although Rational Rose may be used to model business processes, it is primarily directed to low-level interactions between object-oriented programming components. The tool suite generates templates and code fragments to assist software developers in creating an application. However, the software developer must understand the low-level code and then modify and augment the code to produce a functioning application. Moreover, tools in this suite do not have a real-time visual validation and error prevention.
IBM MQ Series Workflow Builder and Holosofx Workbench (WebSphere® Business Integration Workbench) are both visual workflow modeling tools that allow the design of processes that are used on IBM's MQ Series computers. A design surface allows a user to define simple document routing processes to back-end data-stores. These tools produce framework templates and exportable data structures that assist a software developer in creating an application. However, the software developer must interact with the underlying code using a low-level programming language to create an application. Also, Visio® is a design tool that can be used for visually modeling business processes. However, its primary purpose is only to produce a visual description of systems and does not produce a computer-executable application. Other design tools generate output that does not include computer-executable instructions but rather generate metadata, as may be represented, for instance in an Extensible Markup Language (XML) file.
There is a real need in the industry for methods and apparatuses that remove the software programmer from writing code (or machine instructions) using an underlying low-level software language in order to generate an output that is computer-executable. Currently, design tools often generate a metadata output that typically requires processing the metadata at run time by translation software in order to create computer-executable instructions, thus delaying the completion of the project and potentially degrading the execution time of an application. Also, with a metadata output the user is typically able to “muck up” the output. Translation software processing may be required at each instance of execution of the application. However, design tools that generate an output at a low-level program language typically require the user to have knowledge of the low-level program language in order to edit the output. Thus, enabling the user to design an application at a high level while generating computer-executable instructions as an output that is scalable (i.e. capable of being executed on different computer platforms at run time) would be very beneficial to advancing the art.